package com.weyoung.app.service;

import com.weyoung.app.dto.req.StatsQueryDTO;
import com.weyoung.app.dto.resp.StatsResultDTO;

import java.util.List;

/**
 * 统计服务接口
 * 提供访问量统计、网络类型统计、设备类型统计等功能
 */
public interface StatsService {
    /**
     * 获取访问统计数据
     * 包括每日的PV（访问量）、UV（独立访客）、UIP（独立IP）数据
     *
     * @param queryDTO 查询参数，包含时间范围、用户ID、URL等筛选条件
     * @return 按日期排序的访问统计数据列表
     */
    List<StatsResultDTO> getAccessStats(StatsQueryDTO queryDTO);
    
    /**
     * 获取网络类型统计数据
     * 统计不同网络类型（4G/5G/Wi-Fi）的访问分布
     *
     * @param queryDTO 查询参数，包含时间范围、用户ID、URL等筛选条件
     * @return 各网络类型的访问次数统计列表
     */
    List<StatsResultDTO> getNetworkStats(StatsQueryDTO queryDTO);
    
    /**
     * 获取设备类型统计数据
     * 统计不同设备类型（iPhone/Android/iPad）的访问分布
     *
     * @param queryDTO 查询参数，包含时间范围、用户ID、URL等筛选条件
     * @return 各设备类型的访问次数统计列表
     */
    List<StatsResultDTO> getDeviceStats(StatsQueryDTO queryDTO);
} 